package com.dongliusuo.orangeforms.webadmin.app.vo;

import com.dongliusuo.orangeforms.common.core.base.vo.BaseVo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.util.Date;
import java.util.Map;

/**
 * 客户管理VO视图对象。
 *
 * @author DongLiusuo
 * @date 2024-12-31
 */
@Schema(description = "客户管理VO视图对象")
@Data
@EqualsAndHashCode(callSuper = true)
public class CustomerInfoVo extends BaseVo {

    /**
     * 基本信息组: 唯一标识符。
     */
    @Schema(description = "基本信息组: 唯一标识符")
    private Long customerId;

    /**
     * 基本信息组: 名。
     */
    @Schema(description = "基本信息组: 名")
    private String firstName;

    /**
     * 基本信息组: 姓。
     */
    @Schema(description = "基本信息组: 姓")
    private String lastName;

    /**
     * 基本信息组: 电子邮件。
     */
    @Schema(description = "基本信息组: 电子邮件")
    private String email;

    /**
     * 基本信息组: 电话号码。
     */
    @Schema(description = "基本信息组: 电话号码")
    private String phoneNumber;

    /**
     * 基本信息组: 性别。
     */
    @Schema(description = "基本信息组: 性别")
    private String gender;

    /**
     * 基本信息组: 出生日期。
     */
    @Schema(description = "基本信息组: 出生日期")
    private Date birthDate;

    /**
     * 证件信息组: 证件类型。
     */
    @Schema(description = "证件信息组: 证件类型")
    private String idType;

    /**
     * 证件信息组: 证件号码。
     */
    @Schema(description = "证件信息组: 证件号码")
    private String idNumber;

    /**
     * 地址组: 省行政区划代码。
     */
    @Schema(description = "地址组: 省行政区划代码")
    private Long provinceCode;

    /**
     * 地址组: 市行政区划代码。
     */
    @Schema(description = "地址组: 市行政区划代码")
    private Long cityCode;

    /**
     * 地址组: 区行政区划代码。
     */
    @Schema(description = "地址组: 区行政区划代码")
    private Long districtCode;

    /**
     * 地址组: 中国详细地址。
     */
    @Schema(description = "地址组: 中国详细地址")
    private String detailedAddressChinese;

    /**
     * 地址组: 外国详细地址。
     */
    @Schema(description = "地址组: 外国详细地址")
    private String foreignAddress;

    /**
     * 地址组: 国籍。
     */
    @Schema(description = "地址组: 国籍")
    private String nationality;

    /**
     * 职业信息组: 职业。
     */
    @Schema(description = "职业信息组: 职业")
    private String occupation;

    /**
     * 职业信息组: 公司名称。
     */
    @Schema(description = "职业信息组: 公司名称")
    private String companyName;

    /**
     * 财务信息组: 收入范围。
     */
    @Schema(description = "财务信息组: 收入范围")
    private String incomeRange;

    /**
     * 紧急联系人组: 紧急联系人姓名。
     */
    @Schema(description = "紧急联系人组: 紧急联系人姓名")
    private String emergencyContactName;

    /**
     * 紧急联系人组: 紧急联系人电话。
     */
    @Schema(description = "紧急联系人组: 紧急联系人电话")
    private String emergencyContactPhone;

    /**
     * 注册信息组: 注册日期。
     */
    @Schema(description = "注册信息组: 注册日期")
    private Date registrationDate;

    /**
     * 注册信息组: 最后登录时间。
     */
    @Schema(description = "注册信息组: 最后登录时间")
    private Date lastLogin;

    /**
     * 状态组: 用户状态。
     */
    @Schema(description = "状态组: 用户状态")
    private String status;

    /**
     * 备注组: 其他备注信息。
     */
    @Schema(description = "备注组: 其他备注信息")
    private String notes;

    /**
     * 删除标记(1: 正常 -1: 已删除)。
     */
    @Schema(description = "删除标记(1: 正常 -1: 已删除)")
    private Integer deletedFlag;

    /**
     * customerId 字段的分组统计数据。
     */
    @Schema(description = "customerId 字段的分组统计数据")
    private Long 计数;

    /**
     * provinceCode 字典关联数据。
     */
    @Schema(description = "provinceCode 字典关联数据")
    private Map<String, Object> provinceCodeDictMap;

    /**
     * cityCode 字典关联数据。
     */
    @Schema(description = "cityCode 字典关联数据")
    private Map<String, Object> cityCodeDictMap;

    /**
     * districtCode 字典关联数据。
     */
    @Schema(description = "districtCode 字典关联数据")
    private Map<String, Object> districtCodeDictMap;

    /**
     * gender 常量字典关联数据。
     */
    @Schema(description = "gender 常量字典关联数据")
    private Map<String, Object> genderDictMap;

    /**
     * idType 常量字典关联数据。
     */
    @Schema(description = "idType 常量字典关联数据")
    private Map<String, Object> idTypeDictMap;

    /**
     * nationality 全局字典关联数据。
     */
    @Schema(description = "nationality 全局字典关联数据")
    private Map<String, Object> nationalityDictMap;

    /**
     * incomeRange 全局字典关联数据。
     */
    @Schema(description = "incomeRange 全局字典关联数据")
    private Map<String, Object> incomeRangeDictMap;

    /**
     * status 全局字典关联数据。
     */
    @Schema(description = "status 全局字典关联数据")
    private Map<String, Object> statusDictMap;
}
